package com.hy;

import java.util.*;

/**
 * Created With IntelliJ IDEA.
 * Descriptions:两个数组的交集
 * 给定两个数组nums1和nums2 ，返回 它们的交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
 *
 * 示例 1：
 * 输入：nums1 = [1,2,2,1], nums2 = [2,2]
 * 输出：[2]
 *
 * 示例 2：
 * 输入：nums1 = [4,9,5], nums2 = [9,4,9,8,4]
 * 输出：[9,4]
 * 解释：[4,9] 也是可通过的
 *
 * 提示：
 * 1 <= nums1.length, nums2.length <= 1000
 * 0 <= nums1[i], nums2[i] <= 1000
 *
 * author: Mr.Du
 * Date: 2022/11/19
 * Time: 9:54
 */
public class InterSection {
    
    /**
     * 思路：先将nums1的值按位置进行统计，在把nums的值在所统计的数组中进行查看，
     * 如果值不为0，就说明重复了，就把该值加入集合，同时将统计数组的该值对应位置置0
     * 最后输出集合数据即可
     * @param nums1
     * @param nums2
     * @return
     */
    public int[] intersection(int[] nums1, int[] nums2) {
        List<Integer> list = new ArrayList<>();
        int[] arr = new int[1001];
        for(int i = 0;i<nums1.length;i++){
            if(arr[nums1[i]] == 0) arr[nums1[i]]++;
        }
        for(int i = 0;i<nums2.length;i++){
            if(arr[nums2[i]] != 0){
                list.add(nums2[i]);
                arr[nums2[i]] = 0;
            }
        }
        return list.stream().mapToInt(Integer::intValue).toArray();
        
    }

}
